﻿#define _CRT_SECURE_NO_WARNINGS
/*********
冒泡排序
*********/
//#include <stdio.h>
//void bubble_sort(int arr[], int sz)
//{
//	int i = 0;
//	for (i = 0; i < sz - 1; i++)
//	{
//		int j = 0;
//		for (j = 0; j < sz - i - 1; j++)
//		{
//			if (arr[j] > arr[j + 1])
//			{
//				int t = 0;
//				 t = arr[j];
//				arr[j] = arr[j + 1];
//				arr[j + 1] = t;
//			}
//				
//		}
//
//	}
//}
//int main()
//{
//	int arr[10] = { 5,9,3,7,1,0,9,5,3,7 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	bubble_sort(arr, sz);
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}

/*******************************************************************************
冒泡排序优化版本------没有优化的版本就算是已经有序了，他还是会进行排序九次，****
这个优化版本当已经有序了，便退出不在进行排序，大大增加了效率，               ***
********************************************************************************/

#include <stdio.h>
void bubble_sort(int arr[], int sz)//参数接受两个元素个数
{
	int i = 0;
	for (i = 0; i < sz - 1; i++)
	{
		int flag = 1;//假设这一趟已经有序了
		int j = 0;
		for (j = 0; j < sz - i - 1; j++)
		{		
			if (arr[j] > arr[j + 1])
			{	
				flag = 0;//发生交换说明无序
				int t = 0;
				 t = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = t;
				
			}
				
		}
		if (flag == 1)//这一趟没交换说明已经有序了，后面无需排序了
			break;
	}
}
int main()
{
	int arr[10] = { 5,9,3,7,1,0,9,5,3,7 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	bubble_sort(arr, sz);
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}
